iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Rust

Bevy Rogue-lite 勇者冒險篇 × Rust 遊戲開發筆記系列 第 1

為什麼用 Rust + Bevy 做 Rogue-lite

  • 分享至 

  • xImage
  •  

遊戲開發的夢想

從小我就喜歡玩遊戲,第一次置身在一個遊戲中,感覺自己到了一個不同的世界。

在哪裡可以體驗不同的生活,就像電影一樣,當你看電影也試著帶入角色在劇情中的發展,所以也有一說遊戲是「第九藝術」,因為遊戲融合了傳統的八大藝術,並且「互動」是遊戲的核心特徵。玩家不只是被動觀賞,有些遊戲更可以讓玩家決定劇情的走向。

回到我們的主題,為什麼想要做遊戲?

身為一個軟體工程師,開發遊戲就像是想要追逐的聖杯,至少對於喜愛遊戲的人,應該都有產生想要自己開發一款遊戲的夢想,所以就有了想要挑戰這個主題的念頭。

為什麼是 Bevy?

在遊戲開發的世界裡,選擇適合的程式語言和引擎就像選擇武器一樣關鍵。

為什麼不選擇 Unity、Godot 或 Unreal 這些成熟的引擎,反而挑戰相對新穎的 Bevy?

可能對於一些人會選擇 Rust 的原因會是因為——效能、安全性、還有那份「從底層開始掌控一切」的成就感

但對於我而言,其實就只是喜歡 Rust,想要用它來做點有趣的東西。然後目前用 Rust 來作為開發遊戲引擎的選擇,有一定的知名度跟生態系,首選就是 Bevy 了。

先來看一下 Bevy 的程式碼長怎樣:

use bevy::prelude::*;

#[derive(Component)]
struct Dot {
    speed: f32,
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .add_systems(Update, (move_dot_with_mouse, update_cursor_position))
        .insert_resource(CursorPosition::default())
        .run();
}

這段程式碼表現了 Bevy 的一些核心概念:App 是整個程式的容器,透過 add_plugins 載入功能模組,add_systems,並且視需求加入,就像使用 VSCode 可以選擇新增數個 extensions 一樣。

這個範例是一個圓點顯示在螢幕中,然後這個圓點會跟著你的滑鼠游標移動。當然程式碼不是只有這麼簡單,只是先給大家看 Bevy 寫起來的感覺怎麼樣,然後這個遊戲操作起來的畫面會像這樣:

demo

安裝 Bevy

大概了解 Bevy 的寫法之後,第一步很重要,也就是要設定好我們的開發環境。

需要安裝的東西如下,盡量從官方文件中得到最新的消息:

這兩個東西是必備的,Rust 安裝完之後,會自動安裝一個 Cargo 管理工具在電腦中,要新增專案或者是安裝套件都會經由 Cargo 來幫我們處理,可以想成是 npm 這樣的角色。

在 npm 的世界中,會有 package.json 這樣的檔案來紀錄管理我們開發過程中,安裝了哪些東西。Cargo 也有這樣的一個檔案,叫做 Cargo.toml。所以當安裝完 Bevy 在專案中,就可以檢查是不是有這筆紀錄,以我的專案安裝完會是像這樣:

[package]
name = "bevy_demo"
version = "0.1.0"
edition = "2024"

[dependencies]
bevy = "0.16.1"

Bevy 上面有很多的範例,非常建議去試玩看看。當初我也是看到範例之後,才決定要挑戰看看,畢竟可以參考別人的寫法XD

如果對我上面的滑鼠游標移動範例有興趣的話,也可以到我的 repo 下載試玩看看。

選擇製作的遊戲主題

Rogue-lite 遊戲的核心在於「隨機性」和「重玩價值」,每次遊戲都會帶來不同的體驗。這也是我選擇做這個主題的原因,它們的魅力正是來自無限的變化性。而 Rust 的記憶體安全特性配上 Bevy 的現代化 ECS 架構,正是實現這種複雜隨機系統的完美組合。相較於傳統的 C++ 遊戲開發,我們不需要擔心記憶體洩漏或空指標錯誤,可以專注在創意和遊戲性上。

還有一個很重要的原因是,Rogue-lite 類型對比一些劇情向的遊戲來說,可以不需要有任何劇情,所以我們可以專注在遊戲開發上。

最終目標

大概介紹了一下這個主題的想法來源,選擇了遊戲引擎之後,30 天後預計會是什麼樣的結果?

之所以選擇這個主題,是想用最小 MVP 完成一款 Rogue-lite 遊戲,圓了心中的遊戲夢。更重要的是,能大聲跟朋友說:「嘿,你要不要下載我做的遊戲?」


下一篇
打好 ECS 基礎(Entity Component System)
系列文
Bevy Rogue-lite 勇者冒險篇 × Rust 遊戲開發筆記4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言